package com.spit.fammo.util

/**
 * User: Nike
 *  2025/1/8 15:06
 */
import android.content.Context
import android.util.SparseArray
import com.spit.fammo.ext.SCAN_STATUS_MANUALLY
import com.spit.fammo.ext.SCAN_STATUS_QRCODE
import com.spit.fammo.ext.SCAN_STATUS_SCAN
import com.spit.fammo.ext.STATUSID_ASSET_1
import com.spit.fammo.ext.STATUSID_ASSET_2
import com.spit.fammo.ext.STATUSID_ASSET_3
import com.spit.fammo.ext.STATUSID_ASSET_4
import com.spit.fammo.ext.STATUSID_ASSET_5
import com.spit.fammo.ext.STATUSID_ASSET_6
import com.spit.fammo.ext.STATUSID_ASSET_7
import com.spit.fammo.ext.STATUSID_ASSET_8
import com.spit.fammo.ext.STATUSID_ASSET_9
import com.spit.fammo.ext.STATUSID_ASSET_10
import com.spit.fammo.ext.STATUSID_ASSET_9995
import com.spit.fammo.ext.STATUSID_ASSET_9996
import com.spit.fammo.ext.STATUSID_ASSET_9997
import com.spit.fammo.ext.STATUSID_ASSET_9998
import com.spit.fammo.ext.STATUSID_ASSET_9999
import com.spit.fammo.ext.STATUSID_ASSET_10000

object StatusHelper {

    // 创建一个 SparseArray 来存储状态码和对应的字符串资源名称
    private val statusMap: SparseArray<String> = SparseArray()

    // 创建一个 SparseArray 来存储 cerstatus 状态码和对应的字符串资源名称
    private val cerstatusMap: SparseArray<String> = SparseArray()

    private val scanStatusMap: SparseArray<String> = SparseArray()


    init {
        // 初始化状态码和对应的字符串资源名称
        statusMap[STATUSID_ASSET_1] = "status_1" // 入库中
        statusMap[STATUSID_ASSET_2] = "status_2" // 在库
        statusMap[STATUSID_ASSET_3] = "status_3" // 已借出
        statusMap[STATUSID_ASSET_4] = "status_4" // 待借出
        statusMap[STATUSID_ASSET_5] = "status_5" // 删除
        statusMap[STATUSID_ASSET_6] = "status_6" // 丢失
        statusMap[STATUSID_ASSET_7] = "status_7" // 注销
        statusMap[STATUSID_ASSET_8] = "status_8" // 销毁中
        statusMap[STATUSID_ASSET_9] = "status_9" // 异常
        statusMap[STATUSID_ASSET_10] = "status_10" // 不在库
        statusMap[STATUSID_ASSET_9995] = "status_9995" // 已借出（与 STATUSID_ASSET_3 重复，建议检查）
        statusMap[STATUSID_ASSET_9996] = "status_9996" // 审核不通过
        statusMap[STATUSID_ASSET_9997] = "status_9997" // 无描述，建议添加描述
        statusMap[STATUSID_ASSET_9998] = "status_9998" // 无描述，建议添加描述
        statusMap[STATUSID_ASSET_9999] = "status_9999" // 无描述，建议添加描述
        statusMap[STATUSID_ASSET_10000] = "status_10000" // 无描述，建议添加描述

        // 初始化 cerstatus 状态码和对应的字符串资源名称
        cerstatusMap.put(21, "cert_outdated")
        cerstatusMap.put(22, "going_to_outdated")
        cerstatusMap.put(23, "cert_valid")
        cerstatusMap.put(24, "cert_inactive")

    }

    /**
     * 根据 status 值返回对应的字符串资源
     *
     * @param context 上下文
     * @param status  状态码
     * @return 对应的字符串资源，如果状态码不存在，则返回默认值 "未知状态"
     */
    fun getStatusString(context: Context, status: Int): String {
        if (status <= 0){
            return "-"
        }
        val statusName = statusMap.get(status, "status_unknown")
        return context.getString(context.resources.getIdentifier(statusName, "string", context.packageName))
    }

    /**
     * 根据 cerstatus 值返回对应的字符串资源
     *
     * @param context 上下文
     * @param cerstatus  状态码
     * @return 对应的字符串资源，如果状态码不存在，则返回默认值 "未知状态"
     */
    fun getCerstatusString(context: Context, cerstatus: Int): String {
        var statusName = "NA"
        if (cerstatus != 20){
            statusName = cerstatusMap.get(cerstatus, "cerstatus_unknown")
        }
        return context.getString(context.resources.getIdentifier(statusName, "string", context.packageName))
    }

    fun getScanStatusString(context: Context, status: Int): String {
        return when(status){
            SCAN_STATUS_SCAN -> "RFID"
            SCAN_STATUS_QRCODE -> "QRCode"
            SCAN_STATUS_MANUALLY -> "Manually"
            else -> "-"
        }
    }

}